@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ============================================
echo 内网穿透桥接 Windows 安装程序构建脚本
echo ============================================
echo.

:: 检查是否以管理员权限运行
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo [警告] 建议以管理员权限运行此脚本
    echo.
)

:: 设置颜色
set "GREEN=[92m"
set "RED=[91m"
set "YELLOW=[93m"
set "NC=[0m"

:: 步骤1: 检查 Inno Setup 是否已安装
echo %YELLOW%[1/5] 检查 Inno Setup...%NC%
set "INNO_PATH=C:\Program Files (x86)\Inno Setup 6\ISCC.exe"
if not exist "%INNO_PATH%" (
    set "INNO_PATH=C:\Program Files\Inno Setup 6\ISCC.exe"
)
if not exist "%INNO_PATH%" (
    set "INNO_PATH=D:\Program Files (x86)\Inno Setup 6\ISCC.exe"
)
if not exist "%INNO_PATH%" (
    set "INNO_PATH=D:\Program Files\Inno Setup 6\ISCC.exe"
)
if not exist "%INNO_PATH%" (
    echo %RED%错误: 未找到 Inno Setup 6%NC%
    echo.
    echo 请先安装 Inno Setup 6:
    echo 下载地址: https://jrsoftware.org/isdl.php
    echo.
    echo 或使用 Chocolatey 安装:
    echo   choco install innosetup
    echo.
    pause
    exit /b 1
)
echo %GREEN%✓ 找到 Inno Setup: %INNO_PATH%%NC%
echo.

:: 步骤2: 清理旧的构建文件
echo %YELLOW%[2/5] 清理旧的构建文件...%NC%
if exist "build\windows\installer" (
    rmdir /s /q "build\windows\installer"
)
mkdir "build\windows\installer" 2>nul
echo %GREEN%✓ 清理完成%NC%
echo.

:: 步骤3: 构建 Flutter 应用
echo %YELLOW%[3/5] 构建 Flutter Windows 应用...%NC%
echo 这可能需要几分钟...
call flutter build windows --release
if %errorlevel% neq 0 (
    echo %RED%错误: Flutter 构建失败%NC%
    pause
    exit /b 1
)
echo %GREEN%✓ Flutter 应用构建完成%NC%
echo.

:: 步骤4: 检查必要的文件
echo %YELLOW%[4/5] 检查必要的文件...%NC%

:: 检查主程序
if not exist "build\windows\x64\runner\Release\internal_net_bridge.exe" (
    echo %RED%错误: 未找到主程序 internal_net_bridge.exe%NC%
    pause
    exit /b 1
)
echo %GREEN%✓ 找到主程序%NC%

:: 检查 LICENSE 文件
if not exist "LICENSE.txt" (
    echo %YELLOW%警告: 未找到 LICENSE.txt，创建默认许可文件...%NC%
    echo MIT License > LICENSE.txt
    echo. >> LICENSE.txt
    echo Copyright ^(c^) 2025 内网穿透桥接团队 >> LICENSE.txt
    echo. >> LICENSE.txt
    echo 此软件按"原样"提供，不提供任何形式的明示或暗示保证。 >> LICENSE.txt
)
echo %GREEN%✓ 许可文件检查完成%NC%

:: 检查 README 文件
if not exist "README.md" (
    echo %YELLOW%警告: 未找到 README.md，创建默认说明文件...%NC%
    echo # 内网穿透桥接 > README.md
    echo. >> README.md
    echo 这是一个内网穿透桥接客户端应用程序。 >> README.md
)
echo %GREEN%✓ 说明文件检查完成%NC%

:: 检查图标文件
if not exist "windows\runner\resources\app_icon.ico" (
    echo %YELLOW%警告: 未找到应用图标 app_icon.ico%NC%
    echo 将使用默认图标
    
    :: 创建一个简单的图标（如果不存在）
    if not exist "windows\runner\resources" mkdir "windows\runner\resources"
)
echo %GREEN%✓ 资源文件检查完成%NC%
echo.

:: 步骤5: 构建安装程序
echo %YELLOW%[5/5] 构建安装程序...%NC%
"%INNO_PATH%" "windows\installer\setup.iss"
if %errorlevel% neq 0 (
    echo %RED%错误: Inno Setup 构建失败%NC%
    pause
    exit /b 1
)
echo.
echo %GREEN%✓ 安装程序构建完成%NC%
echo.

:: 显示结果
echo ============================================
echo %GREEN%构建成功！%NC%
echo ============================================
echo.
echo 安装程序位置:
for %%f in (build\windows\installer\*.exe) do (
    echo   %%~ff
    set "INSTALLER_PATH=%%~ff"
    set "INSTALLER_SIZE=%%~zf"
)
echo.

:: 计算文件大小（MB）
if defined INSTALLER_SIZE (
    set /a "SIZE_MB=!INSTALLER_SIZE! / 1048576"
    echo 文件大小: !SIZE_MB! MB
    echo.
)

:: 询问是否打开安装程序所在文件夹
choice /C YN /M "是否打开安装程序所在文件夹？"
if errorlevel 2 goto :end
if errorlevel 1 (
    explorer /select,"!INSTALLER_PATH!"
)

:end
echo.
echo 按任意键退出...
pause >nul

